package com.zenithmind.version.pojo.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 文件版本VO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "文件版本VO")
public class FileVersionVO {

    /**
     * 版本ID
     */
    @Schema(description = "版本ID")
    private String id;

    /**
     * 仓库ID
     */
    @Schema(description = "仓库ID")
    private String repositoryId;

    /**
     * 仓库名称
     */
    @Schema(description = "仓库名称")
    private String repositoryName;

    /**
     * 提交ID
     */
    @Schema(description = "提交ID")
    private String commitId;

    /**
     * 提交哈希
     */
    @Schema(description = "提交哈希")
    private String commitHash;

    /**
     * 提交消息
     */
    @Schema(description = "提交消息")
    private String commitMessage;

    /**
     * 分支名称
     */
    @Schema(description = "分支名称")
    private String branchName;

    /**
     * 文件路径
     */
    @Schema(description = "文件路径")
    private String filePath;

    /**
     * 文件名称
     */
    @Schema(description = "文件名称")
    private String fileName;

    /**
     * 文件类型
     */
    @Schema(description = "文件类型")
    private String fileType;

    /**
     * 文件大小
     */
    @Schema(description = "文件大小")
    private Long fileSize;

    /**
     * 文件大小格式化
     */
    @Schema(description = "文件大小格式化")
    private String fileSizeFormatted;

    /**
     * 版本号
     */
    @Schema(description = "版本号")
    private Integer versionNumber;

    /**
     * 变更类型
     */
    @Schema(description = "变更类型")
    private String changeType;

    /**
     * 变更类型名称
     */
    @Schema(description = "变更类型名称")
    private String changeTypeName;

    /**
     * 文件内容
     */
    @Schema(description = "文件内容")
    private String content;

    /**
     * 文件哈希
     */
    @Schema(description = "文件哈希")
    private String fileHash;

    /**
     * 编码格式
     */
    @Schema(description = "编码格式")
    private String encoding;

    /**
     * 行数
     */
    @Schema(description = "行数")
    private Integer lineCount;

    /**
     * 作者ID
     */
    @Schema(description = "作者ID")
    private String authorId;

    /**
     * 作者名称
     */
    @Schema(description = "作者名称")
    private String authorName;

    /**
     * 提交时间
     */
    @Schema(description = "提交时间")
    private LocalDateTime commitTime;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

    /**
     * 是否为二进制文件
     */
    @Schema(description = "是否为二进制文件")
    private Boolean isBinary;

    /**
     * 是否可预览
     */
    @Schema(description = "是否可预览")
    private Boolean canPreview;

    /**
     * 是否可编辑
     */
    @Schema(description = "是否可编辑")
    private Boolean canEdit;

    /**
     * 是否可下载
     */
    @Schema(description = "是否可下载")
    private Boolean canDownload;
}
